package com.school.chapter02.queue_;

import java.util.Scanner;
import com.atguigu.chapter01.queue.CircleArray;
/**
 * Created by Funny_One on 2017/10/13.
 */
public class YangHuiTriangle {
    public static void main(String[] args) {
        Scanner sca = new Scanner(System.in);

        System.out.print("需要显示的行数：");
        int n = sca.nextInt();
        CircleArray queue = new CircleArray(100);

        queue.addQueue(0);
        queue.addQueue(1);//入队0、1
        for (int i = 0; i < n; i++) {
            System.out.printf(" ");
        }
        System.out.println(1);//打印顶层的1
//        for(int times =0;times<n;times++){
//            queue.addQueue(0);
//            int s = queue.size();
//            for (int viceTime = s; viceTime > 0; viceTime--) {
//                System.out.print(" ");
//            }
//            for(int i=1;i<s-1;i++){
//                int a,b=0,c;
//                if(s==3){
//                    a = b;
//                    b = queue.headQueue();
//                    c = a + b;
//                    queue.addQueue(c);
//                    System.out.print(c);
//                }else {
//                    a=(int)queue.headQueue();
//                    queue.getQueue();
//                    b = (int)queue.headQueue();
//                    queue.getQueue();
//                    c = a+b;
//                    queue.addQueue(c);
//                    System.out.print(c+" ");
//                }
//
//            }
//            System.out.println();
//        }
        for(int times =0;times<n - 1;times++){//n行，循环n - 1次,除去开头的第一行
            queue.addQueue(0);//入队0，第一次队列中：010
            int viceTimes = queue.size()-1;//viceTiems是队列中有效数据个数减一
//              下面两个for打印一行
            for(int m =n-times - 1; m>0;m--){//打印 n - 1 - 行数 个空格
                System.out.print(" ");
            }
            for(int i=1;i<=viceTimes;i++){
                int a,b,c;

                a = (int)queue.getQueue();//getQueue获取队列第一个元素并删除
                b = (int)queue.headQueue();//headQueue方法返回队列的第一个元素

                //求出队的第一位与现队列的第一位的和，并将和入队
                c = a+b;
                queue.addQueue(c);

                System.out.print(c+" ");//打印出入队的c
            }
            System.out.println();
        }
    }
}

